﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.SqlClient;
using MotoreDataBase;

namespace MvcSite.Models
{
    [Nome("Notizie")]
    [NonQuery("SelectId", "SELECT * FROM Notizie WHERE Id = @Id")]
    [NonQuery("SelectLastNotice", "SELECT TOP 3 * FROM Notizie WHERE (data_pub IS NOT NULL) ORDER BY data_pub DESC")]
    [NonQuery("InsertNewNotizia", "INSERT INTO Notizie (titolo, testo, data_creazione, data_pub, stato, categoria) VALUES (@titolo, @testo, @data_creazione, @data_pub, @stato, @categoria)")]
    [NonQuery("GetCategorie", "SELECT * FROM categorie_notizie")]
    public class Notizia
    {

        [Nome("Id")]
        [TableDefinition(TipoDatiDb.INT, 0, false, true, true)]
        public int Id { get; set; }
        [Nome("Titolo")]
        public string Titolo { get; set; }
        [Nome("Testo")]
        public string Testo { get; set; }
        [Nome("Data_Creazione")]
        public DateTime DataCreazione { get; set; }
        [Nome("Data_Pub")]
        public DateTime DataPub { get; set; }
        [Nome("Stato")]
        public Stato Stato { get; set; }
        [Nome("Categoria")]
        public string Categoria { get; set; }

        public Notizia(int Id, string Titolo, string Testo, DateTime DataCreazione, DateTime DataPub, Stato Stato, string Categoria)
        {
            this.Id = Id;
            this.Titolo = Titolo;
            this.Testo = Testo;
            this.DataCreazione = DataCreazione;
            this.DataPub = DataPub;
            this.Stato = Stato;
            this.Categoria = Categoria;
        }

        public Notizia()
        {

        }

        public Notizia(SqlDataReader reader)
        {
            try
            {
                this.Id = int.Parse(reader["id"].ToString());
            }
            catch (Exception e) { }
            try
            {
                this.Titolo = reader["titolo"].ToString();
            }
            catch (Exception e) { }
            try
            {
                this.Testo = reader["testo"].ToString();
            }
            catch (Exception e) { }
            try
            {
                this.DataCreazione = DateTime.Parse(reader["data_creazione"].ToString());
            }
            catch (Exception e) { }
            try
            {
                this.DataPub = DateTime.Parse(reader["data_pub"].ToString());
            }
            catch (Exception e) { }
            try
            {
                this.Stato = (Stato)Enum.Parse(typeof(Stato), reader["stato"].ToString());
            }
            catch (Exception e) { }
            try
            {
                this.Categoria = reader["categoria"].ToString();
            }
            catch (Exception e) { }
        }

        public void GetAnteprimaNotizia()
        {
            this.Testo = FunzioniUtili.DeleteTag(this.Testo.Replace("<div>", " ").Replace("</div>", " "));
            int length = 100;
            if (this.Testo.Length < length)
                length = this.Testo.Length;
            this.Testo = this.Testo.Substring(0, length);
        }
        
    }

    public enum Stato
    {
        Pubblicato,
        InAttesa
    }
}